#ifndef _XMESH_CONFIG_H
#define _XMESH_CONFIG_H

#include <algorithm>
#include <iostream>
#include <fstream>
#include <iterator>
#include <functional>
#include <cmath>
#include <numeric>
#include <string>
#include <sstream>
#include <vector>
#include <memory>
#include <cassert>
#include <iomanip>
#include <boost/static_assert.hpp>
#include <boost/mpl/int.hpp>
#include <boost/type_traits.hpp>

#define ASSERT(expr)							\
	assert (expr)

#define TEST(expr,string)						\
	if (!(expr)) \
{\
	std::cout<<"File "<<__FILE__<<", ";			\
	std::cout<<"Line "<<__LINE__<<": ";			\
	throw (string) ;\
}

#define STATIC_ASSERT(expr)\
	BOOST_STATIC_ASSERT(expr)

#define HAVE_STD_UNORDERED_COLLECTIONS


namespace math 
{
static const double epsilon = 1e-20;
static const double epsilon2 = epsilon*epsilon; 
static const double infinity = 1e15 ;
}

#endif
